package com.vend.common.task

/**
 * 完成业务过程中，单个步骤的命令接口
 */
interface ITask {


    /**
     * 准备执行任务，这里主要做一些执行任务前的UI处理,在UI线程执行
     */
    fun onPrepare() {

    }

    /**
     * 执行任务,这里将会是异步操作，在工作线程执行
     */
    fun onExecute(): Boolean

    /**
     * 执行该任务需要输入数据，用于接收上一个任务处理完的数据，在UI线程执行
     */
    fun input(data: Any) {
    }

    /**
     * 任务完成，这里主要做任务成功后的UI处理，在UI线程执行
     */
    fun onComplete() {

    }

    /**
     * 任务完成失败，处理任务失败后的UI显示，在UI线程回字形
     */
    fun onError()

    /**
     * 任务处理完后产生的数据，提供给下一个任务处理
     */
    fun output(): Any {
        return ByteArray(0)
    }

}